package com.example.tpl.system.service;

import java.util.List;

import com.example.tpl.system.util.Result;
import com.example.tpl.system.util.ResultPage;
import com.example.tpl.system.vo.common.DeleteReqVo;
import com.example.tpl.system.vo.common.QueryDetailReqVo;
import com.example.tpl.system.vo.common.UpdateStatusReq;
import com.example.tpl.system.vo.req.MenuReqVo;
import com.example.tpl.system.vo.req.QueryMenuReqVo;
import com.example.tpl.system.vo.resp.MenuRespVo;
import com.example.tpl.system.vo.resp.MenuSimpleRespVo;

/**
 * 描述：菜单信息
 * 作者：刘飞华
 * 日期：2025/01/13 17:57:36
 */
public interface MenuService {

    /**
     * 添加菜单信息
     *
     * @param menu 请求参数
     * @return int
     * @author 刘飞华
     * @date: 2025/01/13 17:57:36
     */
    Result<Integer> addMenu(MenuReqVo menu);

    /**
     * 删除菜单信息
     *
     * @param menu 请求参数
     * @return int
     * @author 刘飞华
     * @date: 2025/01/13 17:57:36
     */
    Result<Integer> deleteMenu(DeleteReqVo menu);

    /**
     * 更新菜单信息
     *
     * @param menu 请求参数
     * @return int
     * @author 刘飞华
     * @date: 2025/01/13 17:57:36
     */
    Result<Integer> updateMenu(MenuReqVo menu);

    /**
     * 更新菜单信息状态
     *
     * @param menu 请求参数
     * @return int
     * @author 刘飞华
     * @date: 2025/01/13 17:57:36
     */
    Result<Integer> updateMenuStatus(UpdateStatusReq menu);

    /**
     * 查询菜单信息详情
     *
     * @param menu 请求参数
     * @return MenuResp
     * @author 刘飞华
     * @date: 2025/01/13 17:57:36
     */
    Result<MenuRespVo> queryMenuDetail(QueryDetailReqVo menu);

    /**
     * 查询菜单信息列表
     *
     * @param menu 请求参数
     * @return ResultPage<MenuResp>
     * @author 刘飞华
     * @date: 2025/01/13 17:57:36
     */
    Result<List<MenuRespVo>> queryMenuList(QueryMenuReqVo menu);

    /**
     * 查询菜单信息(排除按钮)
     *
     * @return List
     * @author 刘飞华
     * @date: 2025/1/20 9:10
     */
    Result<List<MenuSimpleRespVo>> queryMenuListSimple();

    /**
     * 查询菜单资源
     *
     * @param menu 请求参数
     * @return res
     * @author 刘飞华
     * @date: 2025/10/27 9:42
     */
    Result<ResultPage<MenuRespVo>> queryMenuResourceList(QueryMenuReqVo menu);

}